package com.zhb86.live.ui;

import android.os.Bundle;
import android.widget.ImageView;

import androidx.core.content.ContextCompat;

import com.bumptech.glide.Glide;
import com.dueeeke.videocontroller.StandardVideoController;
import com.dueeeke.videocontroller.component.CompleteView;
import com.dueeeke.videocontroller.component.ErrorView;
import com.dueeeke.videocontroller.component.GestureView;
import com.dueeeke.videocontroller.component.LiveControlView;
import com.dueeeke.videocontroller.component.PrepareView;
import com.dueeeke.videocontroller.component.TitleView;
import com.dueeeke.videoplayer.player.VideoView;
import com.superyee.commonlib.constants.AppConfig;
import com.superyee.commonlib.ui.BaseActivity;
import com.superyee.commonlib.utils.StatusBarUtil;
import com.zhb86.live.R;

/**
 * 观看直播
 */
public class LivePlayer extends BaseActivity {

    private VideoView mVideoView;
    private String url = AppConfig.LIVE_PLAY_URL;

    @Override
    protected int getLayoutId() {
        StatusBarUtil.transparencyStatusBar(this);
        return R.layout.live_activity_live_player;
    }

    @Override
    protected void initPerData(Bundle savedInstanceState) {

    }

    @Override
    protected void initView() {
        mVideoView = findViewById(R.id.videoView);

        StandardVideoController controller = new StandardVideoController(this);
        //根据屏幕方向自动进入/退出全屏
        controller.setEnableOrientation(false);

        PrepareView prepareView = new PrepareView(this);//准备播放界面
        ImageView thumb = prepareView.findViewById(R.id.thumb);//封面图
        Glide.with(this).load(ContextCompat.getDrawable(this, R.drawable.live_video_bg)).into(thumb);
        controller.addControlComponent(prepareView);

        controller.addControlComponent(new CompleteView(this));//自动完成播放界面

        controller.addControlComponent(new ErrorView(this));//错误界面

        TitleView titleView = new TitleView(this);//标题栏
        controller.addControlComponent(titleView);

        controller.addControlComponent(new LiveControlView(this));//直播控制条

        GestureView gestureControlView = new GestureView(this);//滑动控制视图
        controller.addControlComponent(gestureControlView);
        //根据是否为直播决定是否需要滑动调节进度
        controller.setCanChangePosition(false);

        //设置标题
        titleView.setTitle("直播标题");

        //注意：以上组件如果你想单独定制，我推荐你把源码复制一份出来，然后改成你想要的样子。
        //改完之后再通过addControlComponent添加上去
        //你也可以通过addControlComponent添加一些你自己的组件，具体实现方式参考现有组件的实现。
        //这个组件不一定是View，请发挥你的想象力😃

        //如果你不需要单独配置各个组件，可以直接调用此方法快速添加以上组件
//            controller.addDefaultControlComponent(title, isLive);

        //竖屏也开启手势操作，默认关闭
            controller.setEnableInNormal(true);
        //滑动调节亮度，音量，进度，默认开启
            controller.setGestureEnabled(true);
        //适配刘海屏，默认开启
//            controller.setAdaptCutout(false);

        //如果你不想要UI，不要设置控制器即可
        mVideoView.setVideoController(controller);

        mVideoView.setUrl(url);

        //保存播放进度
//            mVideoView.setProgressManager(new ProgressManagerImpl());
        //播放状态监听
//            mVideoView.addOnVideoViewStateChangeListener(mOnVideoViewStateChangeListener);

        //临时切换播放核心，如需全局请通过VideoConfig配置，详见MyApplication
        //使用IjkPlayer解码
//            mVideoView.setPlayerFactory(IjkPlayerFactory.create());
        //使用ExoPlayer解码
//            mVideoView.setPlayerFactory(ExoMediaPlayerFactory.create());
        //使用MediaPlayer解码
//            mVideoView.setPlayerFactory(AndroidMediaPlayerFactory.create());

        mVideoView.start();
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void addListener() {

    }

    @Override
    protected void removeListener() {

    }

    @Override
    public void onReceiverNotify(int action, Object obj, int statusCode) {

    }
}
